//
// Created by 28785 on 2025/8/8.
//

#ifndef DLG_H
#define DLG_H

#include <QWidget>


QT_BEGIN_NAMESPACE
namespace Ui { class Dlg; }
QT_END_NAMESPACE

/**
 * @brief 父类或者父类的上层是QObject
 */
class Dlg : public QWidget
{
    Q_OBJECT // 声明为Qt的元对象系统的一部分

    /**
     * @brief QString title：元对象系统的属性，属性名为title,类型为QString
     * @brief READ title：通过成员函数title()读取属性值
     * @brief WRITE setTitle：通过成员函数setTitle()设置属性值
     * @brief NOTIFY titleChanged：当属性值发生变化时,会发出titleChanged()信号
     */
    Q_PROPERTY(QString title READ title WRITE setTitle NOTIFY titleChanged)

public:
    explicit Dlg(QWidget *parent = nullptr);
    ~Dlg() override;

public:
    /**
     * @brief  获取属性title的值
     * @return  属性title的值
     */
    QString title() const;

    /**
     * @brief 设置属性值
     * @param title
     */
    void setTitle(const QString &title);

signals:
    /**
     * @brief 当属性title发生变化时发出信号
     * @param title
     */
    void titleChanged(const QString &title);

private:
    Ui::Dlg *ui;
    QString _strTitle;         ///> 属性title的存储变量
};

inline QString Dlg::title() const
{
    return _strTitle;
}

inline void Dlg::setTitle(const QString& title)
{
    if (_strTitle != title)
    {
        _strTitle = title;
        emit titleChanged(title); // 发送信号
    }
}


#endif //DLG_H
